import { app, dialog } from 'electron'
import { autoUpdater } from 'electron-updater'
let window: any = null
export const updateHandle = (mainWindow) => {
  window = mainWindow
  console.log("🚀 ~ updateHandle ~ mainWindow:", mainWindow)
  // 设置为 false 以手动触发下载
  autoUpdater.autoDownload = false
  // 开发模式下强制检查更新
  autoUpdater.forceDevUpdateConfig = true
  //版本更新控制
  if (process.platform === 'darwin') {
    console.log('我是Window 64版本')
    autoUpdater.setFeedURL('http://xuyu_electron_server.com') //版本更新地址 (具体怎么配置不知道)
  } else {
    // win32版本
    console.log('我是Window 32版本')
    autoUpdater.setFeedURL('http://xuyu_electron_server.com') //版本更新地址 (具体怎么配置不知道)
  }

  autoUpdater.checkForUpdates() //定时轮询 或者 服务器推送 触发更新

  autoUpdater.on('update-available', () => {
    console.log('有可用更新')
    autoUpdater.downloadUpdate()
  })

  autoUpdater.on('update-not-available', () => {
    console.log('没有可用更新')
  })

  // 更新下载进度事件
  autoUpdater.on('download-progress', function (progressObj) {
    console.log('下载进度', progressObj)
    window.webContents.send('downloadProgress', progressObj)
  })

  autoUpdater.on('update-downloaded', (e) => {
    //提醒用户更新成功
    console.log('update-downloaded监听', e)

    //因为dialog是在 app ready 之后才可用的, 所以这里需要用同步的方式来调用

    app.whenReady().then(() => {
      let clickId = dialog.showMessageBoxSync({
        type: 'info',
        title: '升级提示',
        message: '已升级到最新版本,是否立即体验?',
        buttons: ['马上升级', '手动重启'],
        cancelId: 1
      })

      if (clickId === 0) {
        autoUpdater.quitAndInstall()
        app.quit()
      }
    })
  })

  autoUpdater.on('error', (err) => {
    console.log('🚀 ~ err:', err)
  })
}
